package com.gkzf.ai.framework.datapermission.core.rule.dept;

/*******************    💫 Codegeex Suggestion    *******************/
/**
 * {@link DeptDataPermissionRule} 的自定义配置接口
 *
 * 该接口用于自定义部门数据权限规则，通过实现该接口，可以配置基于部门ID和用户ID的过滤规则。
 *
 * 核心功能：
 * - 自定义部门数据权限规则
 * - 配置基于 dept_id 的过滤规则
 * - 配置基于 user_id 的过滤规则
 *
 * 使用示例：
 * ```java
 * DeptDataPermissionRuleCustomizer customizer = rule -> {
 *     rule.addDeptColumn(User.class, "dept_id");
 *     rule.addUserColumn(User.class, "user_id");
 * };
 * ```
 *
 * 构造函数参数：
 * - 无
 *
 * 使用限制：
 * - 必须实现 customize 方法
 * - customize 方法中必须调用 DeptDataPermissionRule 的 addDeptColumn 和 addUserColumn 方法
 *
 * 潜在副作用：
 * - 如果未正确配置过滤规则，可能导致数据权限问题
 *
 * @author 国科智飞
 */
@FunctionalInterface
public interface DeptDataPermissionRuleCustomizer {

    /**
     * 自定义该权限规则
     * 1. 调用 {@link DeptDataPermissionRule#addDeptColumn(Class, String)} 方法，配置基于 dept_id 的过滤规则
     * 2. 调用 {@link DeptDataPermissionRule#addUserColumn(Class, String)} 方法，配置基于 user_id 的过滤规则
     *
     * @param rule 权限规则
     */
    void customize(DeptDataPermissionRule rule);

}
/****************  e5db3d1457a545cd8a662a7b2f983ae1  ****************/
